<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
      // ES7中新增的异步编程方法，async/await的实现是基于 Promise的，简单而言就是async 函数就是返回Promise对象，是generator的语法糖。
      // 语法简洁，更像是同步代码，也更符合普通的阅读习惯；
      // 改进JS中异步操作串行执行的代码组织方式，减少callback的嵌套；
      // Promise中不能自定义使用try/catch进行错误捕获，但是在Async/await中可以像处理同步代码处理错误。

      function resolveAfter2Seconds() {
          return new Promise(resolve => {
              setTimeout(() => {
                  resolve('resolved');
              }, 2000);
          });
      }

      async function asyncCall() {
          console.log('calling');
          const result = await resolveAfter2Seconds();
          console.log(result);
          return result;
          // Expected output: "resolved"
      }
      asyncCall()
    </script>
</body>
</html>